package com.seeyon.apps.cxgd.kit;

import com.seeyon.cap4.form.bean.FormBean;
import com.seeyon.cap4.form.bean.FormDataMasterBean;
import com.seeyon.cap4.form.service.CAP4FormManager;
import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.exceptions.BusinessException;
import com.seeyon.ctp.common.log.CtpLogFactory;
import org.apache.commons.logging.Log;

import java.text.SimpleDateFormat;
import java.util.Date;

public class LogKit {

    private static final Log log = CtpLogFactory.getLog(LogKit.class);

    private static CAP4FormManager cap4FormManager = (CAP4FormManager) AppContext.getBean("cap4FormManager");
    /**
     * 添加日志信息到表单中。
     * 通过给定的表单代码、表单名称、参数、结果信息，创建一个新的表单数据实例，并填充相关信息。
     * 最后，将该表单数据添加到未流动的数据表中。
     *
     * @param formCode 表单代码，用于标识特定的表单。
     * @param formName 表单名称，显示在表单上的名称。
     * @param params 入参信息，以字符串形式表示的函数调用参数。
     * @param result 出参信息，以字符串形式表示的函数调用结果。
     */
    public static void addLog(String formCode, String formName, String params, String result) {
        try {
            // 根据表单代码获取表单定义。
            FormBean formBean = cap4FormManager.getFormByFormCode("JCRZDA_001");
            // 根据表单定义创建一个新的表单数据实例。
            FormDataMasterBean formDataMasterBean = FormDataMasterBean.newInstance(formBean);
            // 填充表单数据的关键字段。
            formDataMasterBean.addFieldValue(formBean.getFieldBeanByDisplay("单号").getName(), formCode);
            formDataMasterBean.addFieldValue(formBean.getFieldBeanByDisplay("入参").getName(), params);
            formDataMasterBean.addFieldValue(formBean.getFieldBeanByDisplay("单据名称").getName(), formName);
            formDataMasterBean.addFieldValue(formBean.getFieldBeanByDisplay("日期").getName(), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()));
            formDataMasterBean.addFieldValue(formBean.getFieldBeanByDisplay("出参").getName(), result);
            // 将填充好的表单数据添加到未流动的数据表中。
            FormCap4Kit.addUnFlowFormDataCap4(formDataMasterBean, formBean);
        } catch (BusinessException e) {
            // 记录业务异常信息。
            log.error("添加日志异常信息:", e);
        }
    }

}
